package org.dromara.system.domain.bo;

import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.system.domain.SysBuildingRoom;

import java.math.BigDecimal;

/**
 * 房屋管理业务对象 sys_building_room
 *
 * @author LSL
 * @date 2024-05-27
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = SysBuildingRoom.class, reverseConvertGenerate = false)
public class SysBuildingRoomBo extends BaseEntity {

    /**
     * 房屋ID
     */
    @NotNull(message = "房屋ID不能为空", groups = {EditGroup.class})
    private Long roomId;

    /**
     * 房屋编号
     */
    @NotBlank(message = "房屋编号不能为空", groups = {AddGroup.class, EditGroup.class})
    private String roomNum;

    /**
     * 单元ID
     */
    @NotNull(message = "单元ID不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long unitId;

    /**
     * 层数
     */
    @NotBlank(message = "层数不能为空", groups = {AddGroup.class, EditGroup.class})
    private String layer;

    /**
     * 室
     */
    @NotNull(message = "室不能为空", groups = {AddGroup.class, EditGroup.class})
    private String section;

    /**
     * 户型
     */
    @NotBlank(message = "户型不能为空", groups = {AddGroup.class, EditGroup.class})
    private String apartment;

    /**
     * 建筑面积
     */
    @NotNull(message = "建筑面积不能为空", groups = {AddGroup.class, EditGroup.class})
    private BigDecimal builtUpArea;

    /**
     * 算费系数
     */
    @NotNull(message = "算费系数不能为空", groups = {AddGroup.class, EditGroup.class})
    private BigDecimal feeCoefficient;

    /**
     * 房屋状态，如房屋出售等，请查看state 表
     */
    @NotBlank(message = "房屋状态，如房屋出售等，请查看state 表不能为空", groups = {AddGroup.class, EditGroup.class})
    private String state;

    /**
     * 小区ID
     */
    @NotNull(message = "小区ID不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long communityId;

    /**
     * 房屋类型
     */
    @NotBlank(message = "房屋类型不能为空", groups = {AddGroup.class, EditGroup.class})
    private String roomType;

    /**
     * 房屋类型 1 住宅房屋，2 办公室 3 宿舍
     */
    private String roomSubType;

    /**
     * 室内面积
     */
    @NotNull(message = "室内面积不能为空", groups = {AddGroup.class, EditGroup.class})
    private BigDecimal roomArea;

    /**
     * 租金
     */
    @NotNull(message = "租金不能为空", groups = {AddGroup.class, EditGroup.class})
    private BigDecimal roomRent;

    /**
     * 状态（0正常 1停用）
     */
    private String status;

    /**
     * 备注
     */
    @NotBlank(message = "备注不能为空", groups = {AddGroup.class, EditGroup.class})
    private String remark;

    /**
     * 楼栋Id
     */
    @NotNull(message = "楼栋Id不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long floorId;


}
